3.8 格式化占位符

在Go语言中,格式化的输入与输出,都需要使用到格式化占位符。例如在上节中我们用到的fmt.Printf()输出,使用%v进行占位,输出了计算结果。

Go 语言的格式化占位符大概可分为以下几种:

  • 普通占位符
  • 布尔占位符
  • 整数占位符
  • 浮点数占位符
  • 复数占位符
  • 字符串占位符
  • 字节切片占位符
  • 指针占位符

在本节中,我们仅针对普通占位符、字符串占位符、数字占位符进行讲解。

首先我们在YouCanGoCode目录下新建一个目录,命名为lesson5,新建一个go文件,命名为 lesson5.go

普通占位符

占位符 说明 举例 输出
%v 普通占位 fmt.Printf("书籍名称:%v", book) You Can Golang!

lesson5.go文件中输入如下代码:

package main

import "fmt"

func main() {
    book := "You Can Golang!"
    fmt.Printf("%v", book)
}

执行lesson5.go输出如下:

You Can Golang!

在上面的代码中,我们定义了一个字符串book,通过fmt.Printf输出,其中通过%v接收book的值,最终输出You Can Golang!

所以我们可以将占位符理解为字符串格式化,通过占位符获取传入的值进行拼接。

实际上,%v主要用于结构体的占位,在这里我们先不深入,之后针对结构体讲解的章节中我们会再次介绍。

%v可以用于接收大部分的数据类型,一般的,如果我们不知道该用哪一个时,我们都会使用%v

字符串占位符

占位符 说明 举例 输出
%s 字符串占位 fmt.Printf("%s", "You Can Golang") You Can Golang!

lesson5.go文件中输入如下代码:

package main

import "fmt"

func main() {
    book := "You Can Golang!"
    fmt.Printf("%s", book)
}

执行lesson5.go输出如下:

You Can Golang!

在上面的代码中,我们仅仅将%v更改为了%s,一般的,我们均使用%s来表示字符串。

数字占位符

占位符 说明 举例 输出
%f 小数占位,默认保留小数点后6位 fmt.Printf("%f", 10.2) 10.200000
%.2f 小数占位,表示保留2位小数 fmt.Printf("%.2f", 10.235) 10.23,10.23
%d 整数占位,表示整数 fmt.Printf("%d", 10) 10

lesson5.go文件中输入如下代码:

package main

import "fmt"

func main() {
    var a = 10.2
    var b = 10.2345
    var c = 10
    fmt.Printf("a: %f\n", a)
    fmt.Printf("b: %0.2f\n", b)
    fmt.Printf("c: %d\n", c)
}

执行lesson5.go输出如下:

a: 10.200000
b: 10.23
c: 10

在上面的代码中,我们使用%f来表示小数,使用%0.2f来将小数仅保留两位,同样的我们可以使用%0.3f来保留3位小数,使用%0.4f来保留4小数,而对于整数,则统一使用%d来进行表示。

\n 换行符

在上面的讲解中,我们在代码里面有看到\n,我们可以在代码里面进行实验,将\n去掉,执行lesson5.go观察输出,我们可以看到次数输出都连在了一起,所以可以总结出:\n用于在输出的时候进行换行。

lesson5.go文件中输入如下代码:

package main

import "fmt"

func main() {
    fmt.Printf("You\n Can\n GoLang\n")
}

执行lesson5.go输出如下:

You
 Can
 GoLang

在上面的代码中,我们分别在YouCanGolang的后面添加了\n,观察输出可以看到一共输出了3行。

通过代码可以总结出,在需要将输出换行的时候,我们只需要在换行内容的后面添加上\n,就可以实现换行输出。

小结

在这些占位符中,还有许多其他的选项可供选择,如对齐方式、填充字符、字段宽度和精度等。

这些选项的使用可以根据不同的需求自定义,并通过占位符进行相应的设置,以达到更好的输出效果。

我们可以在实际使用到的时候去查询手册使用即可,在这里不用特别深入的去记忆,目前只要记住%v%s%d%f就可以很大程度的覆盖到我们日常的使用范围。

results matching ""

    No results matching ""